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

Disassembly:
push ebp
push edi
mov ebp, ecx
push esi
push ebx
sub esp, 0x17c
mov eax, dword [esp + 0x190]
mov edx, dword [eax]
mov eax, dword [edx + 0x1a8]
mov edi, dword [eax + 4]
test edi, edi
jne case.default.0x637de1
cmp dword [edx], 0xe
ja case.default.0x637de1
mov eax, dword [edx]
jmp dword [eax*4 + 0x74222c]
lea esi, [edx + 8]
lea edi, [esp + 0x90]
mov ecx, 0x18
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x14
call fcn.004a7d10
sub esp, 4
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xac]
mov dword [esp + 0x14], ebx
mov edi, ebx
mov esi, ecx
shld ebx, ecx, 0x1b
shld edi, ecx, 3
mov eax, ecx
mov dword [esp + 0x10], ecx
mov edx, ebx
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
shl eax, 0xb
and edx, 0xff00
and eax, 0xff0000
shl esi, 3
or eax, edx
shld ebx, ecx, 0xb
mov edx, ecx
mov ecx, esi
shl edx, 0x1b
or eax, edx
movzx edx, bl
mov ebx, edi
shrd ecx, ebx, 8
or eax, edx
mov edx, edi
and ecx, 0xff000000
shr edx, 0x18
mov dword [esp + 0x4c], eax
or edx, ecx
mov ecx, esi
mov eax, dword [esp + 0x10]
shrd ecx, edi, 0x18
and ecx, 0xff0000
or ecx, edx
mov edx, edi
shr edx, 8
and edx, 0xff00
or ecx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x48], ecx
mov ecx, eax
and ecx, 0x3f
add eax, 1
mov dword [esp + 0xa8], eax
lea eax, [esp + 0x90]
adc edx, 0
mov dword [esp + 0xac], edx
cmp ecx, 0x3f
mov dword [esp + 0x18], eax
lea eax, [eax + ecx + 0x20]
mov byte [eax], pe_nt_image_headers32
lea eax, [esp + 0xb0]
mov dword [esp + 0x1c], eax
jne 0x637eed
mov edx, eax
mov eax, dword [esp + 0x18]
call fcn.00482880
lea edi, [esp + 0x50]
xor eax, eax
mov ecx, 0x10
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0xac]
mov ecx, esi
mov dword [esp + 0x14], 0
and ecx, 0x3f
mov edi, eax
and edi, 0x3f
cmp ecx, 0x37
lea ebx, [ebx + edi + 0x20]
mov dword [esp + 0x10], edi
mov dword [esp + 0x20], ebx
jg 0x6389a0
mov ebx, 0x37
mov esi, ebx
sub esi, ecx
mov ebx, esi
mov ecx, esi
sar ebx, 0x1f
add eax, esi
adc edx, ebx
add ecx, dword [esp + 0x10]
mov dword [esp + 0xa8], eax
adc ebx, dword [esp + 0x14]
mov dword [esp + 0xac], edx
cmp ebx, 0
ja 0x638bb3
cmp ecx, 0x3f
ja 0x638bb3
cmp esi, 4
jae 0x639156
test esi, esi
je 0x637fa0
movzx eax, byte [esp + 0x50]
mov edi, dword [esp + 0x20]
test esi, 2
mov byte [edi], al
jne 0x63951b
mov esi, esi
lea edi, [edi]
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xac]
mov eax, dword [esp + 0x18]
and edx, 0x3f
add ecx, 8
adc ebx, 0
mov dword [esp + 0xa8], ecx
mov ecx, edx
mov dword [esp + 0xac], ebx
xor ebx, ebx
add ecx, 8
mov dword [esp + 0x24], ebx
adc ebx, 0
lea eax, [eax + edx + 0x20]
cmp ebx, 0
mov dword [esp + 0x20], edx
ja 0x6387f0
cmp ecx, 0x3f
ja 0x6387f0
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
mov dword [eax], ecx
mov dword [eax + 4], ebx
mov edi, dword [esp + 0x1c]
xor eax, eax
mov ecx, 0x10
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x190]
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov ebx, dword [eax]
mov edx, dword [ebx + 0x1a8]
lea ecx, [ebx + 0x1a8]
mov eax, dword [edx]
cmp eax, 1
jbe 0x638b23
movsx eax, byte [edx + 0xb]
shr eax, 0x1f
mov dword [esp + 4], eax
mov eax, dword [edx + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov eax, dword [ebx + 0x1a8]
sub esp, 8
mov esi, dword [eax + 0xc]
mov edx, dword [esp + 0x90]
add eax, esi
bswap edx
mov dword [eax], edx
mov edx, dword [esp + 0x94]
bswap edx
mov dword [eax + 4], edx
mov edx, dword [esp + 0x98]
bswap edx
mov dword [eax + 8], edx
mov edx, dword [esp + 0x9c]
bswap edx
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0xa0]
bswap edx
mov dword [eax + 0x10], edx
mov eax, dword [esp + 0x190]
mov eax, dword [eax]
mov eax, dword [eax + 0x1a8]
lea esi, [esi]
mov dword [ebp], eax
mov edx, dword [eax]
add edx, 1
cmp edx, 1
ja 0x6380e0
add esp, 0x17c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret 4
lock add dword [eax], 1
add esp, 0x17c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov dword [esp + 4], 0
mov dword [esp], 0x180
mov ecx, edx
call fcn.0057c690
sub esp, 8
mov eax, dword [esp + 0x190]
mov eax, dword [eax]
mov eax, dword [eax + 0x1a8]
jmp case.default.0x637de1
mov dword [esp + 4], 0
mov dword [esp], 0x100
jmp 0x638102
mov dword [esp + 4], 0
mov dword [esp], 0xe0
jmp 0x638102
mov dword [esp + 4], 1
mov dword [esp], 0x200
jmp 0x638102
mov dword [esp + 4], 1
mov dword [esp], 0x180
jmp 0x638102
mov dword [esp + 4], 1
mov dword [esp], 0x100
jmp 0x638102
mov dword [esp + 4], 1
mov dword [esp], 0xe0
jmp 0x638102
lea edi, [esp + 0x90]
lea esi, [edx + 8]
mov ecx, 0x38
mov dword [esp + 0x18], edi
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x40
call fcn.004a7d10
sub esp, 4
mov eax, dword [esp + 0x190]
mov ebx, dword [eax]
mov eax, dword [ebx + 0x1a8]
lea ecx, [ebx + 0x1a8]
mov edx, dword [eax]
cmp edx, 1
jbe 0x638b70
movsx edx, byte [eax + 0xb]
shr edx, 0x1f
mov dword [esp + 4], edx
mov eax, dword [eax + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov esi, dword [ebx + 0x1a8]
sub esp, 8
mov edx, dword [esi + 0xc]
add esi, edx
je 0x63810c
mov ebx, dword [esp + 0x168]
test ebx, ebx
jne 0x63810c
mov eax, dword [esp + 0x164]
test eax, eax
jne 0x638230
mov eax, dword [esp + 0x18]
mov edx, pe_nt_image_headers32
call fcn.0048a020
nop
mov eax, ebx
mov ecx, ebx
sar eax, 3
not ecx
mov edx, dword [esp + eax*8 + 0x94]
mov eax, dword [esp + eax*8 + 0x90]
and ecx, 7
shl ecx, 3
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
mov byte [esi + ebx], al
add ebx, 1
cmp ebx, 0x40
jne 0x638230
jmp 0x63810c
lea edi, [esp + 0x90]
lea esi, [edx + 8]
mov ecx, 0x38
mov dword [esp + 0x18], edi
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x30
call fcn.004a7d10
sub esp, 4
mov eax, dword [esp + 0x190]
mov ebx, dword [eax]
mov eax, dword [ebx + 0x1a8]
lea ecx, [ebx + 0x1a8]
mov edx, dword [eax]
cmp edx, 1
jbe 0x638b53
movsx edx, byte [eax + 0xb]
shr edx, 0x1f
mov dword [esp + 4], edx
mov eax, dword [eax + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov esi, dword [ebx + 0x1a8]
sub esp, 8
mov edx, dword [esi + 0xc]
add esi, edx
je 0x63810c
mov ebx, dword [esp + 0x168]
test ebx, ebx
jne 0x63810c
mov eax, dword [esp + 0x164]
test eax, eax
jne 0x638310
mov eax, dword [esp + 0x18]
mov edx, pe_nt_image_headers32
call fcn.0048a020
nop
mov eax, ebx
mov ecx, ebx
sar eax, 3
not ecx
mov edx, dword [esp + eax*8 + 0x94]
mov eax, dword [esp + eax*8 + 0x90]
and ecx, 7
shl ecx, 3
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
mov byte [esi + ebx], al
add ebx, 1
cmp ebx, 0x30
jne 0x638310
jmp 0x63810c
lea edi, [esp + 0x90]
lea esi, [edx + 8]
mov ecx, 0x1d
mov dword [esp + 0x18], edi
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x20
call fcn.004a7d10
sub esp, 4
mov eax, dword [esp + 0x190]
mov ebx, dword [eax]
mov eax, dword [ebx + 0x1a8]
lea ecx, [ebx + 0x1a8]
mov edx, dword [eax]
cmp edx, 1
jbe 0x638b40
movsx edx, byte [eax + 0xb]
shr edx, 0x1f
mov dword [esp + 4], edx
mov eax, dword [eax + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov esi, dword [ebx + 0x1a8]
sub esp, 8
mov edx, dword [esi + 0xc]
add esi, edx
je 0x63810c
mov ebx, dword [esp + 0x100]
test ebx, ebx
jne 0x63810c
mov eax, dword [esp + 0xfc]
test eax, eax
je 0x639287
mov eax, ebx
mov ecx, ebx
sar eax, 2
not ecx
mov eax, dword [esp + eax*4 + 0x90]
and ecx, 3
shl ecx, 3
shr eax, cl
mov byte [esi + ebx], al
add ebx, 1
cmp ebx, 0x20
jne 0x6383e5
jmp 0x63810c
lea edi, [esp + 0x90]
lea esi, [edx + 8]
mov ecx, 0x1d
mov dword [esp + 0x18], edi
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x1c
call fcn.004a7d10
sub esp, 4
mov eax, dword [esp + 0x190]
mov ebx, dword [eax]
mov eax, dword [ebx + 0x1a8]
lea ecx, [ebx + 0x1a8]
mov edx, dword [eax]
cmp edx, 1
jbe 0x638b10
movsx edx, byte [eax + 0xb]
shr edx, 0x1f
mov dword [esp + 4], edx
mov eax, dword [eax + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov esi, dword [ebx + 0x1a8]
sub esp, 8
mov edx, dword [esi + 0xc]
add esi, edx
je 0x63810c
mov ebx, dword [esp + 0x100]
test ebx, ebx
jne 0x63810c
mov edx, dword [esp + 0xfc]
test edx, edx
je 0x63939d
mov eax, ebx
mov ecx, ebx
sar eax, 2
not ecx
mov eax, dword [esp + eax*4 + 0x90]
and ecx, 3
shl ecx, 3
shr eax, cl
mov byte [esi + ebx], al
add ebx, 1
cmp ebx, 0x1c
jne 0x6384a5
jmp 0x63810c
lea edi, [esp + 0x90]
lea esi, [edx + 8]
mov ecx, 0x16
mov dword [esp + 0x18], edi
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x10
call fcn.004a7d10
sub esp, 4
mov eax, dword [esp + 0x190]
mov esi, dword [eax]
mov eax, dword [esi + 0x1a8]
lea ecx, [esi + 0x1a8]
mov edx, dword [eax]
cmp edx, 1
jbe 0x638b83
movsx edx, byte [eax + 0xb]
shr edx, 0x1f
mov dword [esp + 4], edx
mov eax, dword [eax + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov ebx, dword [esi + 0x1a8]
sub esp, 8
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0xa0]
add ebx, edx
lea edx, [esp + 0xa8]
mov eax, 0x37
and ecx, 0x3f
lea esi, [edx + ecx]
sub eax, ecx
lea edi, [esi + 1]
mov byte [esi], pe_nt_image_headers32
js 0x638ff3
xor esi, esi
cmp eax, 4
jae 0x638960
test eax, eax
je 0x638582
test al, 2
mov byte [edi], 0
jne 0x6394bf
mov ecx, dword [esp + 0xa0]
lea eax, [ecx*8]
shr ecx, 0x1d
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0xa4]
shl eax, 3
or eax, ecx
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x18]
call fcn.004799d0
mov eax, dword [esp + 0x90]
mov dword [ebx], eax
mov eax, dword [esp + 0x94]
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x98]
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x9c]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x190]
mov eax, dword [eax]
mov eax, dword [eax + 0x1a8]
jmp case.default.0x637de1
lea edi, [esp + 0x90]
lea esi, [edx + 8]
mov ecx, 0x26
mov dword [esp + 0x18], edi
rep movsd dword es:[edi], dword [esi]
lea ecx, [edx + 0x1a8]
mov dword [esp], 0x10
call fcn.004a7d10
sub esp, 4
mov eax, dword [esp + 0x190]
mov esi, dword [eax]
mov eax, dword [esi + 0x1a8]
lea ecx, [esi + 0x1a8]
mov edx, dword [eax]
cmp edx, 1
jbe 0x638ba0
movsx edx, byte [eax + 0xb]
shr edx, 0x1f
mov dword [esp + 4], edx
mov eax, dword [eax + 4]
add eax, 1
mov dword [esp], eax
call fcn.004a5590
mov ebx, dword [esi + 0x1a8]
sub esp, 8
mov edx, dword [ebx + 0xc]
mov eax, dword [esp + 0x90]
add ebx, edx
mov edi, dword [esp + 0x18]
mov edx, 0x40
and eax, 0x3f
lea ecx, [eax + 1]
mov byte [esp + eax + 0xa8], pe_nt_image_headers32
lea edi, [edi + eax + 0x19]
sub edx, ecx
cmp edx, 7
jbe 0x638ac3
mov eax, 0x38
lea edx, [esp + 0xa8]
sub eax, ecx
xor esi, esi
cmp eax, 4
jae 0x638920
test eax, eax
je 0x6386b7
test al, 2
mov byte [edi], 0
jne 0x6394b3
mov eax, dword [esp + 0x90]
shl eax, 3
mov dword [esp + 0x90], eax
mov byte [esp + 0xe0], al
mov ecx, eax
mov byte [esp + 0xe1], ah
shr eax, 0x18
shr ecx, 0x10
mov byte [esp + 0xe3], al
mov eax, dword [esp + 0x94]
mov byte [esp + 0xe2], cl
mov byte [esp + 0xe4], al
mov byte [esp + 0xe5], ah
mov ecx, eax
shr eax, 0x18
shr ecx, 0x10
mov byte [esp + 0xe7], al
mov eax, dword [esp + 0x18]
mov byte [esp + 0xe6], cl
mov ecx, 0x40
call fcn.0049ba20
mov eax, dword [esp + 0x98]
mov byte [ebx], al
mov eax, dword [esp + 0x98]
mov byte [ebx + 1], ah
movzx eax, word [esp + 0x9a]
mov byte [ebx + 2], al
movzx eax, byte [esp + 0x9b]
mov byte [ebx + 3], al
mov eax, dword [esp + 0x9c]
mov byte [ebx + 4], al
mov eax, dword [esp + 0x9c]
mov byte [ebx + 5], ah
movzx eax, word [esp + 0x9e]
mov byte [ebx + 6], al
movzx eax, byte [esp + 0x9f]
mov byte [ebx + 7], al
mov eax, dword [esp + 0xa0]
mov byte [ebx + 8], al
mov eax, dword [esp + 0xa0]
mov byte [ebx + 9], ah
movzx eax, word [esp + 0xa2]
mov byte [ebx + 0xa], al
movzx eax, byte [esp + 0xa3]
mov byte [ebx + 0xb], al
mov eax, dword [esp + 0xa4]
mov byte [ebx + 0xc], al
mov eax, dword [esp + 0xa4]
mov byte [ebx + 0xd], ah
movzx eax, word [esp + 0xa6]
mov byte [ebx + 0xe], al
movzx eax, byte [esp + 0xa7]
mov byte [ebx + 0xf], al
mov eax, dword [esp + 0x190]
mov eax, dword [eax]
mov eax, dword [eax + 0x1a8]
jmp case.default.0x637de1
mov dword [esp + 4], 0
jmp 0x63814a
mov esi, 0x40
mov dword [esp + 0x14], 0
sub esi, edx
cmp esi, 4
mov dword [esp + 0x10], esi
jae 0x638d15
test esi, esi
je 0x638823
movzx edx, byte [esp + 0x48]
test esi, 2
mov byte [eax], dl
jne 0x6394cb
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.00482880
mov eax, dword [esp + 0x20]
add eax, 8
xor ebx, ebx
xor edx, edx
and eax, 0x3f
mov ecx, eax
mov eax, 8
sub eax, ecx
sbb edx, ebx
cmp dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
jg 0x6388ed
jl 0x638865
cmp esi, eax
jae 0x6388ed
lea eax, [esp + 0x48]
mov edi, esi
mov edx, 0xffffffff
not edi
mov dword [esp + 0x28], esi
lea ebx, [eax + esi]
mov eax, edi
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
lea edi, [esp + esi + 0x88]
mov esi, ebx
shrd eax, edx, 6
shl eax, 6
add edi, eax
mov ebx, edi
mov edi, dword [esp + 0x18]
nop
lea esi, [esi]
mov edx, esi
mov eax, edi
add esi, 0x40
call fcn.00482880
cmp ebx, esi
jne 0x6388a0
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x28]
mov edx, 0xffffffff
mov ebx, dword [esp + 0x14]
add ecx, 0x40
not esi
adc ebx, 0
mov eax, esi
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
shrd eax, edx, 6
shr edx, 6
shld edx, eax, 6
shl eax, 6
add eax, ecx
adc edx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x10]
mov eax, 8
lea edi, [esp + 0x48]
sub eax, ecx
lea ebx, [edi + ecx]
mov ecx, eax
je 0x638005
mov edi, dword [esp + 0x1c]
xor eax, eax
movzx edx, byte [ebx + eax]
mov byte [edi + eax], dl
add eax, 1
cmp eax, ecx
jb 0x63890d
jmp 0x638005
lea ecx, [edi + 4]
mov dword [edi], 0
mov dword [edi + eax - 4], 0
and ecx, 0xfffffffc
sub edi, ecx
add eax, edi
and eax, 0xfffffffc
cmp eax, 4
jb 0x6386b7
and eax, 0xfffffffc
xor edi, edi
mov dword [ecx + edi], esi
add edi, 4
cmp edi, eax
jb 0x638949
jmp 0x6386b7
lea ecx, [edi + 4]
mov dword [edi], 0
mov dword [edi + eax - 4], 0
and ecx, 0xfffffffc
sub edi, ecx
add eax, edi
and eax, 0xfffffffc
cmp eax, 4
jb 0x638582
and eax, 0xfffffffc
xor edi, edi
mov dword [ecx + edi], esi
add edi, 4
cmp edi, eax
jb 0x638989
jmp 0x638582
not esi
mov ebx, esi
and ebx, 0x3f
mov ecx, ebx
mov dword [esp + 0x28], ebx
sar ebx, 0x1f
add eax, ecx
adc edx, ebx
add ecx, dword [esp + 0x10]
mov dword [esp + 0xa8], eax
adc ebx, dword [esp + 0x14]
mov dword [esp + 0xac], edx
cmp ebx, 0
ja 0x638ea0
cmp ecx, 0x3f
ja 0x638ea0
mov ebx, dword [esp + 0x28]
cmp ebx, 4
jae 0x6391f8
test ebx, ebx
je 0x638a01
movzx eax, byte [esp + 0x50]
mov ebx, dword [esp + 0x20]
and esi, 2
mov byte [ebx], al
jne 0x63953a
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xac]
mov eax, dword [esp + 0x18]
and edx, 0x3f
add ecx, 0x38
adc ebx, 0
xor esi, esi
mov dword [esp + 0x10], edx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], ebx
lea eax, [eax + edx + 0x20]
mov ebx, edx
mov ecx, esi
add edx, 0x38
adc ecx, 0
cmp ecx, 0
ja 0x638d60
cmp edx, 0x3f
ja 0x638d60
mov edx, dword [esp + 0x50]
mov dword [eax], edx
mov edx, dword [esp + 0x54]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x58]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x5c]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x60]
mov dword [eax + 0x10], edx
mov edx, dword [esp + 0x64]
mov dword [eax + 0x14], edx
mov edx, dword [esp + 0x68]
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x6c]
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0x70]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0x74]
mov dword [eax + 0x24], edx
mov edx, dword [esp + 0x78]
mov dword [eax + 0x28], edx
mov edx, dword [esp + 0x7c]
mov dword [eax + 0x2c], edx
mov edx, dword [esp + 0x80]
mov dword [eax + 0x30], edx
mov edx, dword [esp + 0x84]
mov dword [eax + 0x34], edx
jmp 0x637fa0
xor esi, esi
cmp edx, 4
jae 0x639031
test edx, edx
je 0x638ade
test dl, 2
mov byte [edi], 0
jne 0x6394da
mov eax, dword [esp + 0x18]
lea edx, [esp + 0xa8]
mov ecx, 0x40
call fcn.0049ba20
lea edx, [esp + 0xa8]
mov eax, 0x38
mov edi, edx
jmp 0x63869d
mov edx, dword [eax + 0xc]
mov esi, eax
cmp edx, 0x10
jne 0x63845a
jmp 0x63847f
mov esi, dword [edx + 0xc]
mov eax, edx
cmp esi, 0x10
jne 0x638048
jmp 0x63806d
mov edx, dword [eax + 0xc]
mov esi, eax
cmp edx, 0x10
jne 0x63839a
jmp 0x6383bf
mov edx, dword [eax + 0xc]
mov esi, eax
cmp edx, 0x10
jne 0x6382ba
jmp 0x6382df
mov edx, dword [eax + 0xc]
mov esi, eax
cmp edx, 0x10
jne 0x6381da
jmp 0x6381ff
mov edx, dword [eax + 0xc]
mov ebx, eax
cmp edx, 0x10
jne 0x63851a
jmp 0x63853f
mov edx, dword [eax + 0xc]
mov ebx, eax
cmp edx, 0x10
jne 0x63863b
jmp 0x638660
mov eax, esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], 0
sar eax, 0x1f
mov dword [esp + 0x34], eax
mov eax, 0x40
sub eax, edi
cmp eax, 4
mov edi, eax
mov dword [esp + 0x28], eax
jae 0x639069
test eax, eax
je 0x638bf9
movzx eax, byte [esp + 0x50]
mov ebx, dword [esp + 0x20]
test edi, 2
mov byte [ebx], al
jne 0x639508
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.00482880
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x30]
xor ebx, ebx
mov eax, dword [esp + 0x30]
mov edx, ecx
and edx, 0x3f
mov ecx, edx
mov edx, dword [esp + 0x34]
sub eax, ecx
mov dword [esp + 0x10], eax
sbb edx, ebx
cmp dword [esp + 0x2c], edx
mov dword [esp + 0x14], edx
jg 0x638cd1
jl 0x638c3f
cmp edi, eax
jae 0x638cd1
lea eax, [esp + 0x50]
mov ecx, edi
mov edx, 0xffffffff
not ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], edi
lea ebx, [eax + edi]
mov eax, ecx
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov esi, ebx
shrd eax, edx, 6
lea edx, [ecx + edi]
mov edi, ecx
shl eax, 6
add eax, edx
mov ebx, eax
mov esi, esi
lea edi, [edi]
mov edx, esi
mov eax, edi
add esi, 0x40
call fcn.00482880
cmp ebx, esi
jne 0x638c80
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x30]
mov edx, 0xffffffff
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
add ecx, 0x40
not edi
adc ebx, 0
mov eax, edi
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
shrd eax, edx, 6
shr edx, 6
shld edx, eax, 6
shl eax, 6
add eax, ecx
adc edx, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x28]
lea edi, [esp + 0x50]
mov ecx, dword [esp + 0x1c]
sub esi, eax
add eax, edi
cmp esi, 4
mov ebx, esi
mov edx, eax
jae 0x6391d6
xor eax, eax
test bl, 2
je 0x638d00
movzx eax, word [edx]
mov word [ecx], ax
mov eax, 2
and ebx, 1
je 0x637fa0
movzx edx, byte [edx + eax]
mov byte [ecx + eax], dl
jmp 0x637fa0
mov edx, dword [esp + 0x48]
lea ecx, [esp + 0x48]
mov dword [eax], edx
mov edx, dword [esp + esi + 0x44]
mov dword [eax + esi - 4], edx
lea edx, [eax + 4]
and edx, 0xfffffffc
sub eax, edx
sub ecx, eax
add eax, esi
and eax, 0xfffffffc
cmp eax, 4
jb 0x638823
and eax, 0xfffffffc
xor ebx, ebx
mov edi, dword [ecx + ebx]
mov dword [edx + ebx], edi
add ebx, 4
cmp ebx, eax
jb 0x638d44
jmp 0x638823
mov edi, 0x40
sub edi, dword [esp + 0x10]
mov dword [esp + 0x14], 0
cmp edi, 4
mov dword [esp + 0x10], edi
jae 0x639103
test edi, edi
je 0x638d95
movzx edx, byte [esp + 0x50]
test edi, 2
mov byte [eax], dl
jne 0x6394f9
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.00482880
mov eax, ebx
add eax, 0x38
xor ebx, ebx
xor edx, edx
and eax, 0x3f
mov ecx, eax
mov eax, 0x38
sub eax, ecx
sbb edx, ebx
cmp dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
jg 0x638e50
jl 0x638dd1
cmp edi, eax
jae 0x638e50
lea eax, [esp + 0x50]
mov esi, edi
mov edx, 0xffffffff
not esi
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], edi
lea ebx, [eax + edi]
mov eax, esi
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
lea esi, [ecx + edi]
mov edi, ebx
mov ebx, ecx
shrd eax, edx, 6
shl eax, 6
add esi, eax
mov edx, edi
mov eax, ebx
add edi, 0x40
call fcn.00482880
cmp esi, edi
jne 0x638e03
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
mov edx, 0xffffffff
mov ebx, dword [esp + 0x14]
add ecx, 0x40
not edi
adc ebx, 0
mov eax, edi
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
shrd eax, edx, 6
shr edx, 6
shld edx, eax, 6
shl eax, 6
add eax, ecx
adc edx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x50]
mov edx, 0x38
mov ebx, dword [esp + 0x1c]
sub edx, ecx
add ecx, eax
cmp edx, 4
mov eax, ecx
jae 0x639265
xor ecx, ecx
test dl, 2
je 0x638e82
movzx ecx, word [eax]
mov word [ebx], cx
mov ecx, 2
and edx, 1
je 0x637fa0
movzx eax, byte [eax + ecx]
mov byte [ebx + ecx], al
jmp 0x637fa0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], eax
sar eax, 0x1f
mov dword [esp + 0x3c], eax
mov eax, 0x40
sub eax, edi
cmp eax, 4
mov edi, eax
mov dword [esp + 0x30], eax
jae 0x6390ba
test eax, eax
je 0x638ee8
movzx eax, byte [esp + 0x50]
mov esi, dword [esp + 0x20]
test edi, 2
mov byte [esi], al
jne 0x6394e6
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
call fcn.00482880
mov ebx, dword [esp + 0x10]
add ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov esi, ebx
xor ebx, ebx
and esi, 0x3f
sub eax, esi
sbb edx, ebx
cmp dword [esp + 0x34], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
jg 0x638fad
jl 0x638f2c
cmp edi, eax
jae 0x638fad
lea eax, [esp + 0x50]
mov esi, edi
mov edx, 0xffffffff
not esi
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], edi
lea ebx, [eax + edi]
mov eax, esi
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
lea esi, [ecx + edi]
mov edi, ebx
mov ebx, ecx
shrd eax, edx, 6
shl eax, 6
add esi, eax
nop
mov edx, edi
mov eax, ebx
add edi, 0x40
call fcn.00482880
cmp edi, esi
jne 0x638f60
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x20]
mov edx, 0xffffffff
mov ebx, dword [esp + 0x34]
add ecx, 0x40
not edi
adc ebx, 0
mov eax, edi
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
shrd eax, edx, 6
shr edx, 6
shld edx, eax, 6
shl eax, 6
add eax, ecx
adc edx, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x50]
mov ebx, dword [esp + 0x1c]
sub edx, ecx
add ecx, eax
cmp edx, 4
mov eax, ecx
jae 0x639243
xor ecx, ecx
test dl, 2
je 0x638fde
movzx ecx, word [eax]
mov word [ebx], cx
mov ecx, 2
and edx, 1
je 0x638a01
movzx eax, byte [eax + ecx]
mov byte [ebx + ecx], al
jmp 0x638a01
mov eax, 0x3f
sub eax, ecx
xor ecx, ecx
cmp eax, 4
jae 0x63919d
test eax, eax
je 0x639015
test al, 2
mov byte [esi + 1], 0
jne 0x63952e
mov eax, dword [esp + 0x18]
call fcn.004799d0
lea edx, [esp + 0xa8]
mov eax, 0x38
mov edi, edx
jmp 0x638568
lea ecx, [edi + 4]
mov dword [edi], 0
mov dword [edi + edx - 4], 0
and ecx, 0xfffffffc
sub edi, ecx
add edx, edi
and edx, 0xfffffffc
cmp edx, 4
jb 0x638ade
and edx, 0xfffffffc
xor eax, eax
mov dword [ecx + eax], esi
add eax, 4
cmp eax, edx
jb 0x63905a
jmp 0x638ade
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0x50]
mov dword [ebx], eax
mov eax, dword [esp + edi + 0x4c]
lea edx, [ebx + 4]
and edx, 0xfffffffc
mov dword [ebx + edi - 4], eax
mov eax, ebx
sub eax, edx
mov ebx, eax
sub ecx, eax
add ebx, edi
and ebx, 0xfffffffc
cmp ebx, 4
jb 0x638bf9
and ebx, 0xfffffffc
xor eax, eax
mov dword [esp + 0x20], esi
mov esi, dword [ecx + eax]
mov dword [edx + eax], esi
add eax, 4
cmp eax, ebx
jb 0x6390a4
mov esi, dword [esp + 0x20]
jmp 0x638bf9
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0x50]
mov dword [esi], eax
mov eax, dword [esp + edi + 0x4c]
mov dword [esi + edi - 4], eax
lea eax, [esi + 4]
and eax, 0xfffffffc
sub esi, eax
mov edx, esi
sub ecx, esi
add edx, edi
and edx, 0xfffffffc
cmp edx, 4
jb 0x638ee8
mov ebx, edx
xor edx, edx
and ebx, 0xfffffffc
mov esi, dword [ecx + edx]
mov dword [eax + edx], esi
add edx, 4
cmp edx, ebx
jb 0x6390f1
jmp 0x638ee8
mov edx, dword [esp + 0x50]
lea ecx, [esp + 0x50]
mov dword [eax], edx
mov edx, dword [esp + edi + 0x4c]
mov dword [eax + edi - 4], edx
lea edx, [eax + 4]
and edx, 0xfffffffc
sub eax, edx
sub ecx, eax
add eax, edi
and eax, 0xfffffffc
cmp eax, 4
jb 0x638d95
and eax, 0xfffffffc
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], eax
xor eax, eax
mov esi, dword [ecx + eax]
mov dword [edx + eax], esi
add eax, 4
cmp eax, dword [esp + 0x20]
jb 0x63913e
mov ebx, dword [esp + 0x28]
jmp 0x638d95
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0x50]
mov dword [edi], eax
mov eax, dword [esp + esi + 0x4c]
mov dword [edi + esi - 4], eax
lea eax, [edi + 4]
and eax, 0xfffffffc
sub edi, eax
mov edx, edi
sub ecx, edi
add edx, esi
and edx, 0xfffffffc
cmp edx, 4
jb 0x637fa0
and edx, 0xfffffffc
xor ebx, ebx
mov esi, dword [ecx + ebx]
mov dword [eax + ebx], esi
add ebx, 4
cmp ebx, edx
jb 0x63918b
jmp 0x637fa0
mov dword [esi + 1], 0
add esi, 5
mov dword [edi + eax - 4], 0
and esi, 0xfffffffc
sub edi, esi
add edi, eax
and edi, 0xfffffffc
cmp edi, 4
jb 0x639015
and edi, 0xfffffffc
xor eax, eax
mov dword [esi + eax], ecx
add eax, 4
cmp eax, edi
jb 0x6391c7
jmp 0x639015
mov edi, dword [esp + 0x1c]
mov ecx, esi
xor edx, edx
and ecx, 0xfffffffc
mov esi, dword [eax + edx]
mov dword [edi + edx], esi
add edx, 4
cmp edx, ecx
jb 0x6391e1
lea ecx, [edi + edx]
add edx, eax
jmp 0x638cee
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0x50]
mov dword [esi], eax
mov edi, dword [esp + 0x28]
lea edx, [esi + 4]
and edx, 0xfffffffc
mov eax, dword [esp + edi + 0x4c]
mov dword [esi + edi - 4], eax
sub esi, edx
mov eax, esi
sub ecx, esi
add eax, edi
and eax, 0xfffffffc
cmp eax, 4
jb 0x638a01
and eax, 0xfffffffc
xor ebx, ebx
mov esi, dword [ecx + ebx]
mov dword [edx + ebx], esi
add ebx, 4
cmp ebx, eax
jb 0x639231
jmp 0x638a01
mov edi, dword [esp + 0x1c]
mov ebx, edx
xor eax, eax
and ebx, 0xfffffffc
mov esi, dword [ecx + eax]
mov dword [edi + eax], esi
add eax, 4
cmp eax, ebx
jb 0x63924e
lea ebx, [edi + eax]
add eax, ecx
jmp 0x638fcc
mov edi, dword [esp + 0x1c]
mov ebx, edx
xor eax, eax
and ebx, 0xfffffffc
mov esi, dword [ecx + eax]
mov dword [edi + eax], esi
add eax, 4
cmp eax, ebx
jb 0x639270
lea ebx, [edi + eax]
add eax, ecx
jmp 0x638e70
movsx ecx, word [esp + 0xb8]
lea eax, [ecx + 1]
cmp cx, 0x37
mov edx, ecx
mov word [esp + 0xb8], ax
mov byte [esp + ecx + 0xba], pe_nt_image_headers32
jle 0x6392f8
cmp ax, 0x3f
jg 0x6392e7
mov edi, dword [esp + 0x18]
mov ecx, 0x3e
cwde
sub ecx, edx
mov dword [esp + 4], 0
movzx edx, cx
lea eax, [edi + eax + 0x2a]
add edx, 1
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov eax, 0x40
mov word [esp + 0xb8], ax
mov eax, dword [esp + 0x18]
call fcn.0048e240
movzx eax, word [esp + 0xb8]
cmp ax, 0x37
jg 0x639335
mov edi, dword [esp + 0x18]
mov edx, 0x37
mov dword [esp + 4], 0
sub edx, eax
cwde
movzx edx, dx
lea eax, [edi + eax + 0x2a]
add edx, 1
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov eax, 0x38
mov word [esp + 0xb8], ax
mov eax, dword [esp + 0xb0]
mov edx, eax
mov byte [esp + 0xf4], ah
mov byte [esp + 0xf5], al
shr edx, 0x18
mov byte [esp + 0xf2], dl
mov edx, eax
mov eax, dword [esp + 0xb4]
shr edx, 0x10
mov byte [esp + 0xf3], dl
mov edx, eax
mov byte [esp + 0xf8], ah
mov byte [esp + 0xf9], al
shr edx, 0x18
mov byte [esp + 0xf6], dl
mov edx, eax
mov eax, dword [esp + 0x18]
shr edx, 0x10
mov byte [esp + 0xf7], dl
call fcn.0048e240
jmp 0x6383e5
movsx ecx, word [esp + 0xb8]
lea eax, [ecx + 1]
cmp cx, 0x37
mov edx, ecx
mov word [esp + 0xb8], ax
mov byte [esp + ecx + 0xba], pe_nt_image_headers32
jle 0x63940e
cmp ax, 0x3f
jg 0x6393fd
mov edi, dword [esp + 0x18]
mov ecx, 0x3e
cwde
sub ecx, edx
mov dword [esp + 4], 0
movzx edx, cx
lea eax, [edi + eax + 0x2a]
add edx, 1
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov eax, 0x40
mov word [esp + 0xb8], ax
mov eax, dword [esp + 0x18]
call fcn.0048e240
movzx eax, word [esp + 0xb8]
cmp ax, 0x37
jg 0x63944b
mov edi, dword [esp + 0x18]
mov edx, 0x37
mov dword [esp + 4], 0
sub edx, eax
cwde
movzx edx, dx
lea eax, [edi + eax + 0x2a]
add edx, 1
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov eax, 0x38
mov word [esp + 0xb8], ax
mov eax, dword [esp + 0xb0]
mov edx, eax
mov byte [esp + 0xf4], ah
mov byte [esp + 0xf5], al
shr edx, 0x18
mov byte [esp + 0xf2], dl
mov edx, eax
mov eax, dword [esp + 0xb4]
shr edx, 0x10
mov byte [esp + 0xf3], dl
mov edx, eax
mov byte [esp + 0xf8], ah
mov byte [esp + 0xf9], al
shr edx, 0x18
mov byte [esp + 0xf6], dl
mov edx, eax
mov eax, dword [esp + 0x18]
shr edx, 0x10
mov byte [esp + 0xf7], dl
call fcn.0048e240
jmp 0x6384a5
xor esi, esi
mov word [edi + eax - 2], si
jmp 0x6386b7
xor ecx, ecx
mov word [edi + eax - 2], cx
jmp 0x638582
movzx edx, word [esp + esi + 0x46]
mov word [eax + esi - 2], dx
jmp 0x638823
mov word [edi + edx - 2], 0
jmp 0x638ade
movzx eax, word [esp + edi + 0x4e]
mov esi, dword [esp + 0x20]
mov word [esi + edi - 2], ax
jmp 0x638ee8
movzx edx, word [esp + edi + 0x4e]
mov word [eax + edi - 2], dx
jmp 0x638d95
movzx eax, word [esp + edi + 0x4e]
mov ebx, dword [esp + 0x20]
mov word [ebx + edi - 2], ax
jmp 0x638bf9
movzx eax, word [esp + esi + 0x4e]
mov edi, dword [esp + 0x20]
mov word [edi + esi - 2], ax
jmp 0x637fa0
mov word [edi + eax - 2], 0
jmp 0x639015
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
movzx eax, word [esp + edi + 0x4e]
mov word [esi + edi - 2], ax
jmp 0x638a01