Function at 0x4d1ba0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x28
mov eax, dword [esp + 0x2c]
push ebx
push ebp
push esi
mov ecx, dword [eax + 0x74]
mov edx, dword [eax + 0x7c]
mov ebp, dword [eax + 0x68]
mov esi, dword [eax]
mov ebx, dword [eax + 4]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0x78]
mov dword [esp + 0x1c], edx
push edi
mov edi, dword [eax + 8]
lea ecx, [ecx + edx*4]
mov dword [esp + 0x10], ebp
add ecx, 0xc
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], ecx
mov edx, 1
mov ecx, dword [esp + 0x40]
shl edx, cl
mov ecx, edx
sar ecx, 1
or ecx, edx
test dword [eax + 0x80], 0xfffffffc
mov dword [esp + 0x1c], ecx
jbe 0x4d28f8
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
lea ecx, [ecx + ecx*2]
shl ecx, 2
mov dword [esp + 0x30], ecx
jmp 0x4d1c20
mov eax, dword [esp + 0x3c]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x20], ecx
jbe 0x4d28cd
mov ebp, dword [edx]
mov dword [esp + 0x40], ebp
test ebp, ebp
je 0x4d28ac
test ebp, 0x200010
jne 0x4d1f3d
mov edx, ebp
and edx, 0x1ef
je 0x4d1f3d
mov ecx, dword [eax + 0x6c]
movzx ecx, byte [ecx + edx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d1cf8
cmp ebx, ebp
mov ebx, ebp
jae 0x4d1c8b
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x4d1c9e
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d1ce6
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d1cd9
cmp edx, 0x8f
jbe 0x4d1cca
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d1ce1
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d1ce6
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d1ca4
jmp 0x4d1d84
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d1d81
cmp ebx, ebp
jae 0x4d1d20
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x4d1d26
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
lea esp, [esp]
test edi, edi
jne 0x4d1d72
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d1d65
cmp edx, 0x8f
jbe 0x4d1d56
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d1d6d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d1d72
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d1d30
jmp 0x4d1d84
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x4d1f33
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x80000
and edx, 0x20000
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x40000
shr edx, 2
or edx, ecx
and ebp, 0xaa
shr edx, 0xe
or edx, ebp
movzx ecx, byte [edx + 0x555250]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x555150]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d1e7a
cmp ebx, ebp
mov ebx, ebp
jae 0x4d1e0d
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x4d1e1c
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d1e64
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d1e57
cmp edx, 0x8f
jbe 0x4d1e48
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d1e5f
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d1e64
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d1e22
mov ecx, dword [esp + 0x24]
jmp 0x4d1f08
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d1f05
cmp ebx, ebp
jae 0x4d1e9e
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x4d1ea8
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
mov edi, edi
test edi, edi
jne 0x4d1ef2
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d1ee5
cmp edx, 0x8f
jbe 0x4d1ed6
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d1eed
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d1ef2
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d1eb0
mov ecx, dword [esp + 0x24]
jmp 0x4d1f08
mov ecx, dword [edx + 4]
xor ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
je 0x4d1f14
neg edx
mov ebp, dword [esp + 0x18]
shl ecx, 0x13
or ecx, 0x10
mov dword [ebp], edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
or ebp, ecx
or dword [edx - 4], 0x20
or dword [edx + 4], 8
or ebp, 0x200000
mov dword [esp + 0x40], ebp
test ebp, 0x1000080
jne 0x4d224d
test ebp, 0xf78
je 0x4d224d
mov ecx, dword [eax + 0x6c]
mov edx, ebp
shr edx, 3
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d1ffc
cmp ebx, ebp
mov ebx, ebp
jae 0x4d1f8f
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x4d1fa2
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d1fea
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d1fdd
cmp edx, 0x8f
jbe 0x4d1fce
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d1fe5
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d1fea
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d1fa8
jmp 0x4d2084
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d2081
cmp ebx, ebp
jae 0x4d2024
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x4d202a
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2072
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2065
cmp edx, 0x8f
jbe 0x4d2056
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d206d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2072
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d2030
jmp 0x4d2084
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x4d2243
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x400000
and edx, 0x100000
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x80000
shr edx, 4
or edx, ecx
and ebp, 0x550
shr edx, 0xc
or edx, ebp
shr edx, 3
movzx ecx, byte [edx + 0x555250]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x555150]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d217d
cmp ebx, ebp
mov ebx, ebp
jae 0x4d2110
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x4d211f
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2167
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d215a
cmp edx, 0x8f
jbe 0x4d214b
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d2162
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2167
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d2125
mov ecx, dword [esp + 0x24]
jmp 0x4d2209
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d2206
cmp ebx, ebp
jae 0x4d21a1
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x4d21ab
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d21f3
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d21e6
cmp edx, 0x8f
jbe 0x4d21d7
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d21ee
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d21f3
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d21b1
mov ecx, dword [esp + 0x24]
jmp 0x4d2209
mov ecx, dword [edx + 4]
xor ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
je 0x4d2215
neg edx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
shl ecx, 0x16
or ecx, 0x80
mov dword [ebp + eax*4], edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
or ebp, ecx
or dword [edx - 4], 0x100
or dword [edx + 4], 0x40
or ebp, 0x1000000
mov dword [esp + 0x40], ebp
test ebp, 0x8000400
jne 0x4d2560
test ebp, 0x7bc0
je 0x4d2560
mov ecx, dword [eax + 0x6c]
mov edx, ebp
shr edx, 6
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d230c
cmp ebx, ebp
mov ebx, ebp
jae 0x4d229f
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x4d22b2
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d22fa
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d22ed
cmp edx, 0x8f
jbe 0x4d22de
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d22f5
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d22fa
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d22b8
jmp 0x4d2394
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d2391
cmp ebx, ebp
jae 0x4d2334
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x4d233a
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2382
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2375
cmp edx, 0x8f
jbe 0x4d2366
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d237d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2382
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d2340
jmp 0x4d2394
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x4d2556
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x2000000
and edx, 0x800000
or edx, ecx
mov ecx, ebp
and ecx, 0x10000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 4
or edx, ecx
and ebp, 0x2a80
shr edx, 0xc
or edx, ebp
shr edx, 6
movzx ecx, byte [edx + 0x555250]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x555150]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d248d
cmp ebx, ebp
mov ebx, ebp
jae 0x4d2420
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x4d242f
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2477
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d246a
cmp edx, 0x8f
jbe 0x4d245b
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d2472
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2477
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d2435
mov ecx, dword [esp + 0x24]
jmp 0x4d2519
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d2516
cmp ebx, ebp
jae 0x4d24b1
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x4d24bb
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2503
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d24f6
cmp edx, 0x8f
jbe 0x4d24e7
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d24fe
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2503
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d24c1
mov ecx, dword [esp + 0x24]
jmp 0x4d2519
mov ecx, dword [edx + 4]
xor ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
je 0x4d2525
neg edx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
shl ecx, 0x19
or ecx, 0x400
mov dword [ebp + eax*8], edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
or ebp, ecx
or dword [edx - 4], 0x800
or dword [edx + 4], 0x200
or ebp, 0x8000000
mov dword [esp + 0x40], ebp
test ebp, 0x40002000
jne 0x4d28a2
test ebp, 0x3de00
je 0x4d28a2
mov ecx, dword [eax + 0x6c]
mov edx, ebp
shr edx, 9
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d2624
cmp ebx, ebp
mov ebx, ebp
jae 0x4d25b6
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x4d25c9
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop
test edi, edi
jne 0x4d2612
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2605
cmp edx, 0x8f
jbe 0x4d25f6
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d260d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2612
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d25d0
jmp 0x4d26ac
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d26a9
cmp ebx, ebp
jae 0x4d264c
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x4d2652
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d269a
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d268d
cmp edx, 0x8f
jbe 0x4d267e
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d2695
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d269a
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d2658
jmp 0x4d26ac
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x4d289c
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x10000000
and edx, 0x4000000
or edx, ecx
mov ecx, ebp
and ecx, 0x81ffffff
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 4
or edx, ecx
and ebp, 0x15400
shr edx, 0xc
or edx, ebp
shr edx, 9
movzx ecx, byte [edx + 0x555250]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x555150]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x4d27a9
cmp ebx, ebp
mov ebx, ebp
jae 0x4d273c
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x4d274b
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2793
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2786
cmp edx, 0x8f
jbe 0x4d2777
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d278e
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2793
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d2751
mov edx, dword [esp + 0x24]
jmp 0x4d2839
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x4d2836
cmp ebx, ebp
jae 0x4d27d1
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x4d27db
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x4d2823
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2816
cmp edx, 0x8f
jbe 0x4d2807
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x4d281e
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x4d2823
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x4d27e1
mov edx, dword [esp + 0x24]
jmp 0x4d2839
mov edx, dword [edx + 4]
xor edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
je 0x4d2845
neg ecx
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
mov dword [eax + ebp], ecx
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
or dword [ecx - 4], 0x4000
mov ecx, edx
shl ecx, 0x1c
or ecx, 0x2000
shl edx, 0x12
or ebp, ecx
or edx, 2
mov ecx, dword [esp + 0x14]
or dword [ecx + 4], 0x1000
mov ecx, dword [eax + 0x7c]
mov eax, dword [esp + 0x14]
or dword [eax + ecx*4 + 8], edx
mov edx, eax
mov eax, dword [esp + 0x3c]
or dword [edx + ecx*4 + 4], 4
or dword [edx + ecx*4 + 0xc], 1
or ebp, 0x40000000
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov dword [edx], ebp
mov ebp, dword [esp + 0x18]
inc ecx
add ebp, 4
mov dword [esp + 0x2c], ecx
add edx, 4
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], edx
cmp ecx, dword [esp + 0x20]
jb 0x4d1c34
mov ecx, dword [eax + 0x80]
add edx, 8
add dword [esp + 0x28], 4
and ecx, 0xfffffffc
add ebp, dword [esp + 0x30]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], edx
cmp dword [esp + 0x28], ecx
jb 0x4d1c20
mov ebp, dword [esp + 0x10]
mov dword [eax + 0x68], ebp
mov ebp, dword [esp + 0x28]
mov dword [eax], esi
mov dword [eax + 4], ebx
mov dword [eax + 8], edi
mov edx, dword [eax + 0x80]
cmp ebp, edx
jae 0x4d2d22
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x4d2d22
mov esi, dword [esp + 0x14]
mov ebx, ecx
mov dword [esp + 0x40], ebx
jmp 0x4d2930
xor edi, edi
mov ecx, edx
mov dword [esp + 0x3c], edi
sub ecx, ebp
je 0x4d2d0b
mov ecx, dword [eax + 0x7c]
lea ebp, [edi + edi*2]
mov esi, dword [esi]
add ecx, 2
mov dword [esp + 0x34], ecx
mov edx, 0x200010
mov ecx, ebp
shl edx, cl
test esi, edx
jne 0x4d2ce8
mov edx, 0x1ef
shl edx, cl
test esi, edx
je 0x4d2ce8
shr esi, cl
mov ecx, dword [eax + 0x6c]
and esi, 0x1ef
mov edi, dword [eax]
movzx ecx, byte [esi + ecx]
add ecx, 7
lea ecx, [eax + ecx*4]
mov dword [eax + 0x68], ecx
mov ecx, dword [ecx]
mov edx, dword [eax + 0x68]
mov ecx, dword [ecx]
sub dword [eax + 4], ecx
mov ecx, dword [edx]
mov esi, dword [ecx]
mov ecx, edi
shr ecx, 0x10
cmp ecx, esi
jae 0x4d2a2d
cmp dword [eax + 4], esi
mov dword [eax + 4], esi
mov ecx, dword [edx]
jae 0x4d29b6
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
jmp 0x4d29c1
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
lea esp, [esp]
test ecx, ecx
jne 0x4d2a15
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2a05
cmp edx, 0x8f
jbe 0x4d29f6
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x4d2a0d
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x4d2a12
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x4d29d0
jmp 0x4d2abd
shl esi, 0x10
sub edi, esi
mov esi, dword [eax + 4]
mov dword [eax], edi
mov ecx, dword [edx]
test esi, 0x8000
jne 0x4d2aba
cmp esi, dword [ecx]
jae 0x4d2a52
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
jmp 0x4d2a58
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x4d2aa5
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2a95
cmp edx, 0x8f
jbe 0x4d2a86
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x4d2a9d
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x4d2aa2
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x4d2a60
jmp 0x4d2abd
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x4d2cd3
mov edx, dword [esp + 0x14]
lea ecx, [ebp + 0x11]
mov esi, dword [edx + 4]
mov edi, dword [edx]
mov edx, dword [edx - 4]
shr esi, cl
lea ecx, [ebp + 0x13]
shr edx, cl
and esi, 4
and edx, 1
mov ecx, ebp
or esi, edx
mov edx, edi
shr edx, cl
mov ecx, dword [esp + 0x3c]
and edx, 0xaa
or esi, edx
test ecx, ecx
jne 0x4d2b05
mov ecx, edi
shr ecx, 0xe
and ecx, 0x10
or esi, ecx
jmp 0x4d2b14
lea ecx, [ecx + ecx*2]
mov edx, edi
add ecx, 0xc
shr edx, cl
and edx, 0x10
or esi, edx
lea ecx, [ebp + 0x10]
shr edi, cl
and edi, 0x40
or edi, esi
movzx ecx, byte [edi + 0x555150]
movzx ebp, byte [edi + 0x555250]
add ecx, 7
mov edi, dword [eax]
lea edx, [eax + ecx*4]
mov dword [eax + 0x68], edx
mov ecx, dword [edx]
mov ecx, dword [ecx]
sub dword [eax + 4], ecx
mov ecx, dword [edx]
mov esi, dword [ecx]
mov ecx, edi
shr ecx, 0x10
cmp ecx, esi
jae 0x4d2bd1
cmp dword [eax + 4], esi
mov dword [eax + 4], esi
mov ecx, dword [edx]
jae 0x4d2b61
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
jmp 0x4d2b6c
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x4d2bb9
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2ba9
cmp edx, 0x8f
jbe 0x4d2b9a
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x4d2bb1
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x4d2bb6
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x4d2b74
jmp 0x4d2c65
shl esi, 0x10
sub edi, esi
mov esi, dword [eax + 4]
mov dword [eax], edi
mov ecx, dword [edx]
test esi, 0x8000
jne 0x4d2c62
cmp esi, dword [ecx]
jae 0x4d2bfa
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
jmp 0x4d2c00
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x4d2c4d
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x4d2c3d
cmp edx, 0x8f
jbe 0x4d2c2e
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x4d2c45
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x4d2c4a
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x4d2c08
jmp 0x4d2c65
mov ebx, dword [ecx + 4]
xor ebx, ebp
mov edx, dword [esp + 0x1c]
je 0x4d2c6f
neg edx
mov edi, dword [esp + 0x3c]
mov ecx, edi
imul ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
lea ebp, [edi + edi*2]
mov dword [esi + ecx*4], edx
mov ecx, ebp
mov esi, dword [esp + 0x14]
mov edx, 0x20
shl edx, cl
or dword [esi - 4], edx
mov edx, ebx
shl edx, 0x13
or edx, 0x10
shl edx, cl
or dword [esi], edx
mov edx, 8
shl edx, cl
or dword [esi + 4], edx
cmp edi, 3
jne 0x4d2cdb
mov ecx, dword [esp + 0x34]
mov edx, 0x200000
shl ebx, 0x12
or ebx, 2
or dword [esi + ecx*4], ebx
or dword [esi + ecx*4 - 4], 4
or dword [esi + ecx*4 + 4], 1
mov ecx, ebp
shl edx, cl
or dword [esi], edx
jmp 0x4d2cec
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x14]
mov edx, 0x200000
mov ecx, ebp
shl edx, cl
or dword [esi], edx
jmp 0x4d2cec
mov esi, dword [esp + 0x14]
mov edx, dword [eax + 0x80]
inc edi
mov ebp, dword [esp + 0x28]
mov ecx, edx
sub ecx, ebp
mov dword [esp + 0x3c], edi
cmp edi, ecx
jb 0x4d2940
mov ebx, dword [esp + 0x40]
add dword [esp + 0x18], 4
add esi, 4
dec ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x40], ebx
jne 0x4d2930
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret