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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa0
mov eax, dword [ebp + 8]
mov dword [esp + 0x2c], eax
mov eax, dword [0x44f834]
xor eax, ebp
mov dword [esp + 0x98], eax
push dword [ebp + 0xc]
call fcn.0042d0d0
add esp, 4
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], 0
mov eax, dword [ebp + 8]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
movsd xmm0, qword [ecx + eax + 0x20]
mov eax, 0x3d9e0943
movsd qword [esp + 0x50], xmm0
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 8]
mov eax, 0x3370ee58
mov dword [esp + 4], ecx
nop word cs:[eax + eax]
cmp eax, 0xe1e5d255
jle 0x402190
cmp eax, 0x131abfb0
jg 0x402120
cmp eax, 0xfdcbde76
jg 0x402251
cmp eax, 0xe1e5d256
je 0x4023b7
cmp eax, 0xf253583c
je 0x402558
cmp eax, 0xf29666ba
jne 0x4020b0
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
cmp edx, dword [ecx + eax + 0x20]
sbb esi, dword [ecx + eax + 0x24]
mov eax, 0x2add646c
mov ecx, 0xb8f32cb3
jmp 0x402164
cmp eax, 0x3d9e0942
jle 0x4022f1
cmp eax, 0x522525fd
je 0x4026cf
cmp eax, 0x40053032
je 0x4026f8
cmp eax, 0x3d9e0943
jne 0x4020b0
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
cmp eax, 1
mov eax, 0xf29666ba
sbb ecx, 0
mov ecx, 0x2add646c
cmovl eax, ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x20], 0
cmp eax, 0xe1e5d255
jg 0x4020bb
nop word cs:[eax + eax]
nop dword [eax]
cmp eax, 0xaeaf70bd
jle 0x4021e0
cmp eax, 0xd566f205
jg 0x40229f
cmp eax, 0xaeaf70be
je 0x402747
cmp eax, 0xb8f32cb3
je 0x4027cf
cmp eax, 0xcd58aa7d
jne 0x4020b0
mov eax, 0x65a3ce7
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
cmp eax, 0x9be1335d
jle 0x402317
cmp eax, 0x9be1335e
je 0x402820
cmp eax, 0xa60291df
je 0x40283d
cmp eax, 0xa64c3958
jne 0x4020b0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], 0
mov ecx, 0xaeaf70be
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x6c], eax
xor eax, eax
cmp eax, dword [esp + 0x68]
mov eax, 0
sbb eax, dword [esp + 0x6c]
mov eax, 0x522525fd
cmovl eax, ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x6c]
jmp 0x4026bb
cmp eax, 0xfdcbde77
je 0x40285a
cmp eax, 0x65a3ce7
je 0x402897
cmp eax, 0xc678d15
jne 0x4020b0
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x14], 4
mov dword [esp + 0x10], eax
mov eax, 0x522525fd
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
cmp eax, 0xd566f206
je 0x402a94
cmp eax, 0xd809e259
je 0x402cc5
cmp eax, 0xd974e8f3
jne 0x4020b0
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
add eax, 0xffffffff
adc ecx, 0xffffffff
mov dword [esp + 0x28], eax
mov eax, 0xfdcbde77
mov dword [esp + 0x24], ecx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
cmp eax, 0x131abfb1
je 0x402d4f
cmp eax, 0x2add646c
je 0x402d91
cmp eax, 0x3370ee58
jne 0x4020b0
jmp 0x402f91
cmp eax, 0x8bc5549d
je 0x402dca
cmp eax, 0x9a378b8b
jne 0x4020b0
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x6c]
mov eax, 0xbd863b61
mov ebx, 0xc803690e
mov ecx, 0x3e73981
mov edx, 0x6dfd91cc
not ecx
sub esi, eax
mov eax, 0x92082d61
sbb edi, eax
sub esi, ebx
mov eax, 0x38046f6a
sbb edi, eax
mov eax, 0x6dfd91cc
not eax
add eax, edx
mov edx, 0x3e73981
adc ecx, edx
add eax, esi
mov edx, 0x38046f6a
mov esi, 0xb14b4a9b
adc ecx, edi
add eax, ebx
mov edi, 0xbd863b61
mov ebx, 0x92082d61
adc ecx, edx
sub eax, esi
mov edx, 0xe5c47e77
sbb ecx, edx
add eax, edi
adc ecx, ebx
add eax, esi
adc ecx, edx
mov dword [esp + 0x34], eax
mov eax, 0xa64c3958
mov dword [esp + 0x30], ecx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [0x450508]
lea edx, [eax - 1]
imul edx, eax
mov ecx, edx
mov eax, edx
xor ecx, 0x633d4e7d
and eax, 0x61140c3d
and ecx, edx
not edx
and edx, 0x2294240
or eax, edx
xor eax, 0x61140c3d
mov edx, eax
and edx, ecx
xor ecx, eax
or ecx, edx
mov eax, ecx
and ecx, 0x633d4e7d
not eax
and eax, 0x9cc2b182
or ecx, eax
mov esi, ecx
mov eax, ecx
xor esi, 0x45e4e867
and eax, 0x7fdae319
and esi, ecx
not ecx
and ecx, 0x80251ce6
or eax, ecx
mov edx, eax
mov edi, eax
xor eax, 0x7fdae318
xor edx, 0x7fdae319
xor edi, 0xc5c1f481
and edi, edx
and edx, 1
mov ecx, edi
and edi, 0x6936439c
or eax, edx
not ecx
mov edx, eax
and eax, 0x75cf7aec
mov ebx, ecx
not edx
and ebx, 0x96c9bc63
and edx, 0x8a308513
or edi, ebx
mov ebx, esi
and esi, 0x6936439c
or eax, edx
not ebx
or ecx, ebx
and ebx, 0x96c9bc63
or esi, ebx
not ecx
xor esi, edi
mov edi, eax
xor eax, 0x8a308513
or ecx, esi
xor edi, 0x500360e0
mov esi, ecx
and ecx, 0x45e4e866
and edi, 0x5a33e5e1
not esi
and esi, 0xba1b1799
or ecx, esi
mov edx, ecx
and ecx, 0x5a33e5e1
not edx
mov esi, edx
or edx, eax
and eax, 0xa5cc1a1e
and esi, 0xa5cc1a1e
or edi, eax
not edx
or ecx, esi
xor edi, ecx
mov ecx, dword [0x45050c]
or edx, edi
mov eax, edx
and edx, 0x1a15240c
not eax
and eax, 0xe5eadbf3
or eax, edx
xor eax, 0x1a15240c
sete dl
setne ah
cmp ecx, 0xa
setl dh
cmp ecx, 9
mov cl, ah
setg al
xor dl, dh
xor dh, ah
xor cl, al
or al, ah
xor al, 1
mov ah, cl
or al, dl
mov dl, dh
xor ah, 1
xor dl, al
or al, dh
xor al, 1
or al, dl
mov edx, ecx
and dl, ah
xor al, 1
mov ch, dl
xor dl, cl
xor ch, 1
or ch, ah
xor ch, 1
or ch, dl
mov edx, ecx
xor ch, al
xor dl, al
or al, cl
xor al, 1
or al, dl
mov edx, 0xcd58aa7d
mov cl, al
xor cl, ch
test al, 1
mov eax, 0x65a3ce7
cmovne eax, edx
test ch, 1
cmove eax, edx
test cl, 1
mov edx, 0x65a3ce7
cmove eax, edx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + eax + 0x14]
mov eax, edx
not eax
and edx, eax
mov ecx, eax
and ecx, edx
xor edx, eax
or edx, ecx
mov eax, edx
mov ecx, edx
xor eax, 0x89737a0a
and ecx, 0x2ff4e908
and eax, edx
not edx
and edx, 0xd00b16f7
or ecx, edx
mov esi, ecx
xor ecx, 0x2ff4e8c8
xor esi, 0x2ff4e908
mov edx, esi
and esi, 0x1c0
and edx, 0x89737a0a
or ecx, esi
mov edi, edx
mov esi, ecx
and ecx, 0x494e0efb
and edi, eax
xor eax, edx
not esi
or eax, edi
and esi, 0xb6b1f104
mov edx, eax
and eax, 0xcad82bd8
or ecx, esi
not edx
mov esi, ecx
xor ecx, 0xb6b1f104
and edx, 0x3527d427
xor esi, 0x49060698
or eax, edx
and esi, 0x7996169c
mov edx, eax
xor eax, 0xbc54afed
mov edi, eax
xor edx, 0x41821010
or eax, ecx
and ecx, 0x8669e963
and edi, 0x8669e963
and edx, 0x7996169c
or esi, ecx
not eax
or edx, edi
xor esi, edx
or eax, esi
mov ecx, eax
not ecx
mov edx, ecx
and ecx, eax
and eax, 0x801d8772
and edx, 0x7fe2788d
or eax, edx
xor eax, 0x801d8772
mov edx, eax
xor eax, ecx
and edx, ecx
or eax, edx
mov ecx, eax
and eax, 0xa42063fd
not ecx
and ecx, 0x5bdf9c02
or eax, ecx
mov ecx, eax
xor eax, 0x8880002
xor ecx, 0x24002011
and eax, 0x88a843ee
and ecx, 0x7757bc11
or ecx, eax
mov eax, ecx
xor ecx, 0x66468800
xor eax, 0x20400c
and ecx, 0xeece8be2
and eax, 0x1131741d
or eax, ecx
mov ecx, 0x522525fd
xor eax, 0x1131741d
cmp eax, 0x40
mov eax, 0xa64c3958
cmove eax, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x10], ecx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x1c]
mov ecx, 0x40053032
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x78], eax
mov eax, 0x131abfb1
cmp dword [esp + 0x78], 0
jmp 0x40272c
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + eax + 0x38]
mov eax, dword [ecx]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [ebp + 0xc]
call dword [eax + 0x24]
xor edx, dword [esp + 0x44]
xor eax, dword [esp + 0x40]
mov ecx, 0x131abfb1
or eax, edx
mov eax, 0xa60291df
mov edx, dword [esp + 0x78]
cmove eax, ecx
mov dword [esp + 0x18], edx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov ebx, dword [ecx + eax + 0x38]
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov al, byte [ecx + eax + 0x40]
mov ecx, 0x3e275e5a
mov byte [esp + 3], al
movzx esi, al
mov eax, dword [ebx + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x90], eax
nop
cmp ecx, 0xbf32560c
je 0x4027bb
cmp ecx, 0x502f8a9a
je 0x402de7
cmp ecx, 0x3e275e5a
jne 0x402780
cmp dword [esp + 0x90], 0
mov ecx, 0xbf32560c
mov eax, 0x502f8a9a
cmove ecx, eax
xor eax, eax
cmp ecx, 0xbf32560c
jne 0x402788
mov eax, dword [ebx + 0x30]
mov ecx, 0x502f8a9a
mov eax, dword [eax]
cmp ecx, 0xbf32560c
jne 0x402788
jmp 0x4027bb
mov eax, dword [esp + 0x4c]
mov esi, 0x819ea6b1
mov edi, 0x117505eb
mov edx, 0x819ea6b1
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
sub esi, dword [esp + 0x40]
sbb edi, dword [esp + 0x44]
sub esi, edx
mov edx, 0x117505eb
sbb edi, edx
add esi, dword [ecx + eax + 0x20]
adc edi, dword [ecx + eax + 0x24]
mov dword [esp + 0xc], esi
mov eax, 0x2add646c
mov dword [esp + 0x20], edi
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, 0x3370ee58
mov dword [esp + 4], 4
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, 0x131abfb1
mov dword [esp + 0x18], 4
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x28]
mov ecx, 0xd809e259
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x84], eax
xor eax, eax
cmp eax, dword [esp + 0x80]
mov eax, 0
sbb eax, dword [esp + 0x84]
mov eax, 0xd566f206
cmovl eax, ecx
jmp 0x402d79
mov ecx, dword [0x450508]
mov edi, 0x8bc5549d
lea eax, [ecx - 1]
imul eax, ecx
mov ecx, eax
mov edx, eax
and eax, 0x805849f9
not ecx
and edx, 0x59261002
and ecx, 0x2681a604
or edx, ecx
xor edx, 0x59261002
or eax, edx
mov ecx, eax
and eax, 0x6e974c4d
not ecx
and ecx, 0x9168b3b2
or eax, ecx
mov esi, eax
mov ecx, eax
xor eax, 0xeecf05b5
xor esi, 0xeecf05b4
xor ecx, 0x120b202
mov edx, esi
and ecx, 0x6529b706
and esi, 1
and edx, 0x9ad648f9
or eax, esi
or ecx, edx
mov esi, eax
and eax, 0x7def49fe
mov edx, ecx
and ecx, 0x353944da
not esi
not edx
and esi, 0x8210b601
and edx, 0xcac6bb25
or eax, esi
or ecx, edx
mov edx, ecx
xor ecx, 0x5010f3dd
xor edx, 0xb2a0822
mov esi, ecx
and esi, 0xf4d5c645
and edx, 0xb2a39ba
or edx, esi
mov esi, eax
xor eax, 0x8210b601
xor esi, 0x92a09ba
or ecx, eax
and eax, 0xf4d5c645
and esi, 0xb2a39ba
not ecx
or esi, eax
xor esi, edx
or ecx, esi
mov esi, ecx
mov edx, ecx
xor esi, 0x5864b6c9
and edx, 0x5212d92c
and esi, ecx
not ecx
and ecx, 0xaded26d3
or edx, ecx
mov eax, edx
and edx, 0x8000640
xor eax, 0x86426c1
or eax, 0xa79b4936
mov ecx, eax
and ecx, 0xf3f4f0ad
or edx, ecx
mov ecx, esi
and esi, 0xc0b0f52
not ecx
or eax, ecx
and ecx, 0xf3f4f0ad
or esi, ecx
not eax
mov ecx, dword [0x45050c]
xor esi, edx
or eax, esi
mov esi, 0xcd58aa7d
mov edx, eax
and eax, 0x5864b6c9
not edx
and edx, 0xa79b4936
or eax, edx
mov edx, eax
and eax, 0x2c80c760
not edx
and edx, 0xd37f389f
or eax, edx
xor eax, 0x2c80c760
cmp eax, 0xffffffff
sete dl
cmp ecx, 0xa
setl al
cmp ecx, 9
mov ah, dl
setg cl
and ah, cl
or cl, dl
xor cl, 1
mov ch, ah
and ch, cl
xor cl, ah
mov ah, al
xor al, dl
or ah, dl
or cl, ch
mov dl, ah
xor dl, al
xor al, 1
or al, ah
xor dl, 1
xor al, 1
or al, dl
mov edx, eax
xor dl, 1
and al, dl
mov ah, dl
and ah, al
xor al, dl
or al, ah
mov ah, cl
xor ah, 1
mov edx, eax
mov ch, ah
xor dl, 1
mov bl, ah
and ch, cl
mov dh, dl
and bl, ch
xor ch, ah
and dh, al
or al, cl
xor ah, dl
or ch, bl
mov ebx, edx
xor al, 1
mov bh, ch
and bl, dh
xor dh, dl
or al, ah
or dh, bl
xor bh, 1
mov cl, al
and bh, dh
xor dh, 1
and dh, ch
or dh, bh
xor cl, dh
test cl, 1
cmovne edi, esi
test al, 1
mov eax, 0x8bc5549d
cmovne eax, edi
test dh, 1
cmove eax, edi
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov edi, dword [ebp + 8]
mov eax, dword [0x450510]
lea ecx, [eax - 1]
imul ecx, eax
mov eax, ecx
or eax, 1
mov edx, eax
and eax, 0x637bc1d3
not edx
and edx, 0x9c843e2c
or edx, eax
mov eax, ecx
not eax
mov ebx, eax
or ebx, 0x637bc1d2
and ebx, 0x637bc1d3
xor ebx, edx
mov edx, ebx
and ebx, ecx
not edx
and eax, edx
or ebx, eax
mov eax, dword [0x450514]
not ebx
or ebx, edx
cmp ebx, 0xffffffff
mov ebx, 0x74483854
sete cl
setne dl
sete byte [esp + 0x8e]
cmp eax, 9
setg ch
cmp eax, 0xa
setl al
setl byte [esp + 0x8f]
and dl, ch
mov ah, al
and ah, cl
xor cl, al
or ah, dl
mov al, cl
mov edx, 0x27a6f0b4
xor ah, 1
xor al, 1
or ah, ch
and cl, ah
xor ah, 1
mov ch, ah
xor ch, al
and al, ah
and ch, ah
or al, cl
mov cl, ch
xor cl, al
test cl, 1
cmovne ebx, edx
test al, al
mov eax, 0x7285f49c
mov esi, ebx
cmovne esi, edx
test ch, 1
cmove esi, ebx
nop dword [eax]
cmp eax, 0x7285f49b
jg 0x402bb0
cmp eax, 0xee233685
je 0x402b7a
cmp eax, 0x27a6f0b4
jne 0x402b60
jmp 0x40208b
mov eax, dword [esp + 4]
movsd xmm0, qword [edi + eax + 0x20]
movsd qword [esp + 0x90], xmm0
mov dword [edi + eax + 0x24], 0
mov dword [edi + eax + 0x20], 0
mov eax, esi
cmp eax, 0x7285f49b
jle 0x402b67
nop word cs:[eax + eax]
cmp eax, 0x74483854
je 0x402c9c
cmp eax, 0x7285f49c
jne 0x402b60
movzx eax, byte [esp + 0x8e]
movzx ecx, byte [esp + 0x8f]
mov ebx, eax
mov ah, al
mov bh, cl
mov dh, cl
xor bl, 1
xor bh, 1
and bl, al
mov ch, bh
xor bl, 1
or ch, cl
xor ah, bl
or bl, al
xor ch, 1
xor bl, 1
or bl, ah
mov ah, bl
xor ah, 1
mov al, ah
and al, bl
and bl, cl
xor al, 1
mov dl, al
or al, ah
xor dl, ah
xor al, 1
or al, dl
mov dl, cl
and dl, bh
and dh, dl
xor dl, cl
or dl, dh
mov dh, bh
xor dl, ch
xor dh, ch
or ch, bh
and bh, ah
or ah, cl
xor ch, 1
xor ah, 1
or bl, bh
or ch, dh
mov dh, dl
mov cl, ah
xor dh, ch
or ch, dl
and cl, bl
xor bl, ah
xor ch, 1
or bl, cl
or ch, dh
mov cl, bl
mov dl, ch
xor cl, 1
xor dl, 1
or dl, al
xor al, 1
or al, ch
mov ch, al
or al, dl
xor ch, dl
xor al, 1
or al, ch
mov edx, eax
xor dl, bl
and bl, al
and dl, al
xor al, 1
and al, cl
or bl, al
mov eax, 0x74483854
mov ecx, ebx
xor cl, dl
test bl, 1
mov ebx, 0xee233685
cmovne eax, ebx
test dl, 1
mov edx, 0x74483854
cmove eax, edx
test cl, 1
cmovne eax, ebx
cmp eax, 0x7285f49b
jle 0x402b67
jmp 0x402bb0
mov eax, dword [esp + 4]
mov dword [edi + eax + 0x24], 0
mov dword [edi + eax + 0x20], 0
mov eax, 0xee233685
cmp eax, 0x7285f49b
jle 0x402b67
jmp 0x402bb0
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov ebx, dword [ecx + eax + 0x38]
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov al, byte [ecx + eax + 0x40]
mov ecx, 0x3e275e5a
mov byte [esp + 3], al
movzx esi, al
mov eax, dword [ebx + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x90], eax
nop dword [eax]
cmp ecx, 0xbf32560c
je 0x402d3b
cmp ecx, 0x502f8a9a
je 0x402ea2
cmp ecx, 0x3e275e5a
jne 0x402d00
cmp dword [esp + 0x90], 0
mov ecx, 0xbf32560c
mov eax, 0x502f8a9a
cmove ecx, eax
xor eax, eax
cmp ecx, 0xbf32560c
jne 0x402d08
mov eax, dword [ebx + 0x30]
mov ecx, 0x502f8a9a
mov eax, dword [eax]
cmp ecx, 0xbf32560c
jne 0x402d08
jmp 0x402d3b
mov eax, dword [esp + 0x18]
mov ecx, 0xfdcbde77
mov dword [esp + 0x7c], eax
mov eax, 0xd566f206
cmp dword [esp + 0x7c], 0
cmove eax, ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 8], ecx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x38]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x5c]
push dword [esp + 0x2c]
call fcn.0040b0f0
cmp byte [esp + 0x3c], 0
mov eax, 0xf253583c
mov ecx, 0x9be1335e
jmp 0x402f7e
mov eax, 0xd566f206
mov dword [esp + 8], 4
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov dword [esp + 0x90], eax
sar eax, 0x1f
mov ecx, 0x87a74c58
mov dword [esp + 0x94], eax
nop dword [eax]
cmp ecx, 0xddc43fa5
jg 0x402e50
cmp ecx, 0x842755c7
je 0x402f62
cmp ecx, 0x87a74c58
jne 0x402e00
xor ecx, ecx
mov edx, 0xddc43fa6
cmp ecx, dword [esp + 0x90]
mov ecx, 0
sbb ecx, dword [esp + 0x94]
mov ecx, 0xf7df41fb
cmovl ecx, edx
cmp ecx, 0xddc43fa5
jle 0x402e08
nop word cs:[eax + eax]
cmp ecx, 0xddc43fa6
je 0x402e77
cmp ecx, 0xf7df41fb
jne 0x402e00
mov eax, dword [ebx]
mov ecx, ebx
push esi
call dword [eax + 0xc]
mov ecx, 0x842755c7
cmp ecx, 0xddc43fa5
jle 0x402e08
jmp 0x402e50
mov eax, dword [ebx + 0x30]
dec dword [eax]
mov eax, dword [ebx + 0x20]
mov ecx, dword [eax]
lea edx, [ecx + 1]
mov dword [eax], edx
movzx eax, byte [esp + 3]
mov byte [ecx], al
mov ecx, 0x842755c7
mov eax, esi
cmp ecx, 0xddc43fa5
jle 0x402e08
jmp 0x402e50
mov dword [esp + 0x90], eax
sar eax, 0x1f
mov ecx, 0x87a74c58
mov dword [esp + 0x94], eax
nop dword [eax + eax]
cmp ecx, 0xddc43fa5
jg 0x402f10
cmp ecx, 0x842755c7
je 0x402f71
cmp ecx, 0x87a74c58
jne 0x402ec0
xor ecx, ecx
mov edx, 0xddc43fa6
cmp ecx, dword [esp + 0x90]
mov ecx, 0
sbb ecx, dword [esp + 0x94]
mov ecx, 0xf7df41fb
cmovl ecx, edx
cmp ecx, 0xddc43fa5
jle 0x402ec8
nop word cs:[eax + eax]
cmp ecx, 0xddc43fa6
je 0x402f37
cmp ecx, 0xf7df41fb
jne 0x402ec0
mov eax, dword [ebx]
mov ecx, ebx
push esi
call dword [eax + 0xc]
mov ecx, 0x842755c7
cmp ecx, 0xddc43fa5
jle 0x402ec8
jmp 0x402f10
mov eax, dword [ebx + 0x30]
dec dword [eax]
mov eax, dword [ebx + 0x20]
mov ecx, dword [eax]
lea edx, [ecx + 1]
mov dword [eax], edx
movzx eax, byte [esp + 3]
mov byte [ecx], al
mov ecx, 0x842755c7
mov eax, esi
cmp ecx, 0xddc43fa5
jle 0x402ec8
jmp 0x402f10
cmp eax, 0xffffffff
mov eax, 0x9a378b8b
mov ecx, 0xc678d15
jmp 0x402f7e
cmp eax, 0xffffffff
mov eax, 0xd974e8f3
mov ecx, 0xe1e5d256
cmove eax, ecx
cmp eax, 0xe1e5d255
jg 0x4020bb
jmp 0x402190
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x20], ecx
mov eax, dword [ebp + 8]
mov edx, dword [eax + ecx + 0xc]
mov dword [esp + 0x18], eax
mov ecx, edx
mov eax, edx
and edx, 0x5c0bfc56
not ecx
and eax, 0x8c6c383
mov dword [esp + 0x10], ecx
and ecx, 0xf7393c7c
or ecx, eax
mov eax, dword [esp + 4]
mov dword [esp + 8], ecx
mov ebx, eax
mov ecx, eax
mov edi, eax
not ebx
xor ecx, 0x4f434ba3
and edi, 0x48034ba1
mov esi, ebx
and ecx, eax
and eax, 0x3ae581a3
and esi, 0xc51a7e5c
or eax, esi
not eax
or eax, ebx
and ebx, 0x7400002
or edi, ebx
mov dword [esp + 4], eax
mov esi, edi
xor edi, 0xb7fcb45e
xor esi, 0x48010821
mov eax, edi
and eax, 0x67af3c0
and esi, 0x49010823
or esi, eax
mov eax, ecx
and ecx, 0xf9850c3f
not eax
or edi, eax
and eax, 0x67af3c0
or ecx, eax
not edi
xor ecx, esi
or edi, ecx
mov eax, edi
and edi, 0x4f434ba3
not eax
and eax, 0xb0bcb45c
or edi, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x1c], edi
mov esi, eax
xor eax, 0xf7393c7c
xor esi, 0x8c6c383
mov dword [esp + 8], eax
and eax, 0x57dc26e2
mov dword [esp + 0x14], esi
and esi, 0xa823d91d
or esi, eax
mov ecx, esi
xor esi, 0x6942220
xor ecx, 0xa823d91d
and esi, 0x26b72335
mov eax, ecx
and ecx, 0x3ae581a3
and eax, 0xd948dcca
or eax, esi
xor eax, 0x1c52a296
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
and eax, 0xa3f403a9
or edx, eax
mov esi, edx
xor edx, 0x23040228
xor esi, 0x5c0bfc56
and edx, 0x370cee3c
mov eax, esi
and esi, 0xc51a7e5c
and eax, 0xc8f311c3
or eax, edx
mov edx, ecx
xor eax, 0xf2169060
xor edx, 0xdc220a7b
or esi, eax
and edx, ecx
mov ecx, dword [esp + 0xc]
mov eax, esi
and esi, 0xa95e8000
not eax
and eax, 0x56a17fff
or esi, eax
mov eax, edi
and edi, 0x6bf60c3e
or ecx, 0x23ddf584
not eax
mov dword [esp + 0x10], eax
and eax, 0x9409f3c1
or edi, eax
mov eax, edi
xor edi, 0x51138d9d
xor eax, 0x2ae40022
and eax, 0x3ae581a3
or edi, eax
mov eax, edi
and edi, 0xd5b127f7
not eax
and eax, 0x2a4ed808
or edi, eax
mov dword [esp + 0x28], edi
mov edi, esi
xor esi, 0x56a17fff
mov eax, esi
xor edi, 0x9120000
or esi, 0x23ddf584
and eax, 0xb64ddeed
and edi, 0x49b22112
or edi, eax
mov eax, edx
and edx, 0xcbc423d8
not eax
mov ebx, eax
or eax, ecx
and ebx, 0x343bdc27
not eax
or edx, ebx
mov ebx, ecx
and ecx, 0x343bdc27
not ebx
and ebx, 0xc8000258
or ebx, ecx
mov ecx, edi
xor ecx, 0xb64ddeed
xor ebx, edx
mov edx, esi
and esi, 0x336e5428
mov dword [esp + 0x24], ecx
or ecx, 0xdc220a7b
or eax, ebx
mov ebx, edi
not edx
mov edi, ecx
and ecx, 0x336e5428
and edx, 0xcc000a53
xor ebx, 0x9220102
not edi
or edx, esi
and ebx, 0x192b132f
and edi, 0x91a184
or edi, ecx
mov ecx, eax
and eax, 0x7e58ce8a
not ecx
xor edx, edi
mov edi, dword [esp + 4]
and ecx, 0x81a73175
or eax, ecx
mov ecx, edx
and edx, 0x7e58ce8a
not ecx
and ecx, 0x81a73175
or edx, ecx
mov ecx, dword [esp + 0xc]
xor edx, eax
mov esi, ecx
and ecx, 0x192b132f
not esi
mov eax, esi
and eax, 0xe6d4ecd0
or ecx, eax
mov eax, dword [esp + 0x24]
or esi, eax
and eax, 0xe6d4ecd0
or ebx, eax
not esi
mov eax, edx
xor ebx, ecx
mov ecx, dword [esp + 0x28]
or esi, ebx
not esi
and eax, esi
xor esi, edx
or esi, eax
mov eax, ecx
xor ecx, 0x2a4ed808
xor eax, 0x84902464
mov edx, ecx
and ecx, 0x532b4b93
and eax, 0xacd4b46c
or edx, edi
or eax, ecx
mov ecx, edi
and edi, 0x532b4b93
not edx
not ecx
and ecx, 0xacd4b46c
or ecx, edi
mov edi, esi
xor ecx, eax
mov eax, edx
and edi, 0x7d196775
and eax, ecx
xor ecx, edx
or ecx, eax
mov eax, esi
xor eax, 0x32ec7061
mov edx, ecx
and eax, esi
not esi
xor edx, 0x32ec7061
and esi, 0x82e6988a
or edi, esi
mov esi, ecx
not esi
and esi, edx
and edx, ecx
mov ecx, edi
xor edi, 0x2e41000
or edi, 0xcd138f9e
xor ecx, 0x30004000
mov ebx, edi
and ecx, 0x30a05000
and ebx, 0xa4caaf3
or ecx, ebx
mov ebx, eax
and eax, 0xf5b3550c
not ebx
or edi, ebx
and ebx, 0xa4caaf3
or eax, ebx
not edi
xor eax, ecx
mov ecx, esi
and esi, 0x8812e170
not ecx
or edi, eax
mov eax, ecx
and eax, 0x77ed1e8f
or esi, eax
mov eax, edx
and edx, 0x8812e170
not eax
or ecx, eax
and eax, 0x77ed1e8f
or edx, eax
not ecx
mov eax, edi
xor edx, esi
not eax
or ecx, edx
mov edx, dword [esp + 8]
and eax, ecx
not ecx
and ecx, edi
mov edi, dword [esp + 0x1c]
or ecx, eax
mov eax, edx
and edx, 0x84130024
mov esi, edx
mov edx, dword [esp + 0x14]
and edi, 0x7becffdb
and edx, 0x7becffdb
or edx, esi
mov esi, dword [esp + 0x10]
or eax, esi
and esi, 0x84130024
or edi, esi
mov esi, eax
xor edi, edx
mov edx, eax
and esi, 0xd9dd8026
not edx
and edx, 0x26227fd9
or edx, esi
mov esi, edi
and edi, 0x26227fd9
not esi
or eax, esi
and esi, 0xd9dd8026
or edi, esi
not eax
xor edi, edx
or eax, edi
mov edx, eax
and eax, 0xc6bb488d
not edx
and edx, 0x3944b772
or eax, edx
mov edx, eax
xor eax, 0x3944b772
xor edx, 0x4984881
mov esi, eax
and esi, 0xea23064c
and edx, 0x15dcf9b3
or edx, esi
xor edx, 0xea23064c
xor eax, edx
and eax, edx
mov edx, ecx
or edx, 0x7600768e
mov esi, edx
mov edi, edx
not esi
and edi, 0x5bc922d8
and esi, 0x80368921
or esi, edi
mov edi, ecx
xor edi, 0x89ff8971
and edi, ecx
not ecx
mov ebx, edi
and edi, 0xa436dd27
not ebx
or edx, ebx
and ebx, 0x5bc922d8
or edi, ebx
mov ebx, eax
xor eax, 0x89ff8971
not edx
not ebx
xor edi, esi
and eax, ebx
or edx, edi
mov dword [esp + 4], ebx
mov esi, eax
and eax, 0x813b7d9b
not esi
mov edi, esi
and edi, 0x7ec48264
or eax, edi
mov edi, ebx
or edi, 0x89ff8971
mov ebx, edi
or esi, edi
and edi, 0x7ec48264
not ebx
not esi
and ebx, 0x748a
or ebx, edi
mov edi, dword [esp + 4]
xor ebx, eax
mov eax, edx
or esi, ebx
not eax
and eax, esi
not esi
and esi, edx
mov edx, dword [esp + 0x18]
or esi, eax
mov eax, ecx
and eax, edi
xor edi, ecx
mov ecx, dword [esp + 0x20]
or edi, eax
mov eax, edi
and edi, 0xef35fbd1
not eax
and eax, 0x10ca042e
or edi, eax
mov eax, esi
xor edi, 0xef35fbd1
and eax, edi
xor edi, esi
lea esi, [edx + ecx]
or edi, eax
xor eax, eax
cmp dword [edx + ecx + 0x38], 0
mov dword [esp + 0x14], esi
mov edx, edi
mov ecx, edi
mov dword [esp + 4], edi
not edx
mov esi, edx
mov dword [esp + 8], edx
sete al
and edx, 0x8eb83ae0
xor ecx, 0x7147c51f
mov dword [esp + 0xc], eax
mov eax, edi
and eax, 0x7147c51f
or edx, eax
or ecx, eax
mov ebx, edx
xor ebx, esi
and ebx, edx
mov edx, ecx
and ecx, 0xce123d75
not edx
mov esi, ebx
mov edi, ebx
mov eax, edx
xor esi, 0xbb465056
and edi, 0xd24a7a12
and edx, 0x44b9afa9
and eax, 0x31edc28a
and esi, ebx
not ebx
or eax, ecx
and ebx, 0x2db585ed
mov ecx, eax
xor eax, 0x75546d23
or edi, ebx
xor ecx, 0x31edc28a
and eax, ecx
mov dword [esp + 0x18], ecx
mov ecx, eax
and ecx, edx
xor edx, eax
or edx, ecx
mov ecx, edi
xor edi, 0x29040044
or edi, 0x44b9afa9
xor ecx, 0xd24a7a12
mov eax, edi
mov ebx, edi
not eax
and ebx, 0x7df00cd1
and eax, 0x82065006
or eax, ebx
mov ebx, esi
and esi, 0x820ff32e
not ebx
or edi, ebx
and ebx, 0x7df00cd1
or esi, ebx
not edi
xor esi, eax
mov eax, edx
and edx, 0xc28af696
not eax
or edi, esi
and eax, 0x3d750969
or edx, eax
mov eax, edi
and edi, 0xc28af696
not eax
and eax, 0x3d750969
or edi, eax
xor edi, edx
mov edx, dword [esp + 0x18]
mov eax, edx
and eax, ecx
xor ecx, edx
or ecx, eax
mov eax, edi
and edi, 0xa7ad08b4
not eax
mov edx, eax
or eax, ecx
and edx, 0x5852f74b
not eax
or edi, edx
mov edx, ecx
and ecx, 0x5852f74b
not edx
and edx, 0xa7ad08b4
or edx, ecx
xor edx, edi
or eax, edx
mov edx, dword [esp + 0xc]
lea ecx, [edx*4 + 0x2008a0]
lea edi, [edx*4]
lea edx, [edx*4 + 0x2144051b]
xor ecx, 0x2009ac
xor edx, 0x5003c004
or ecx, edi
or edx, 0x8eb83ae0
not edi
not ecx
mov ebx, edx
and ecx, 0x2819ac
not ebx
or ecx, 0x40448401
mov esi, ecx
xor ecx, 0x312b59be
and ebx, ecx
or ecx, edx
xor esi, 0xced4a641
and edx, esi
not ecx
or edx, ebx
mov esi, ecx
and esi, edx
xor edx, ecx
mov ecx, eax
and eax, 0x10f8fc0f
not ecx
or edx, esi
mov esi, ecx
or ecx, 0xdc7c0009
and esi, 0xef0703f0
or eax, esi
mov esi, edx
and edx, 0x2383fff6
not esi
and esi, 0xdc7c0009
or edx, esi
mov esi, eax
xor eax, 0xc4040000
xor esi, 0x10100000
or eax, 0x2281dbb6
and eax, 0xe6eddbbf
and esi, 0x18100000
or esi, eax
mov eax, ecx
and ecx, 0xe6eddbbf
not eax
and eax, 0x1022440
or eax, ecx
xor eax, esi
mov ecx, eax
not ecx
and ecx, edx
not edx
and edx, eax
mov eax, dword [esp + 4]
or edx, ecx
mov ecx, dword [esp + 8]
and eax, 0x78f2941e
and ecx, 0x870d6be1
or ecx, eax
mov eax, dword [esp + 0xc]
lea esi, [eax*4 - 0x78f2941f]
and esi, edi
and edi, 0x253902af
lea eax, [edi - 0x253902b0]
or edi, 0xdfcffff1
not esi
mov ebx, edi
or edi, esi
and esi, 0x1072001e
and ebx, 0x137308de
or esi, 0x840c6321
not edi
xor esi, ebx
mov ebx, dword [esp + 8]
or edi, esi
mov esi, ecx
and ecx, 0x7a65204e
not esi
and esi, 0x859adfb1
or ecx, esi
mov esi, edi
and edi, 0x3265204e
not esi
and esi, 0x929410
or edi, esi
mov esi, dword [esp + 4]
xor edi, ecx
mov ecx, ebx
and ecx, 0xf2f9ba0d
and esi, 0xd0645f2
or esi, ecx
mov ecx, ebx
or ecx, eax
and eax, 0xf2f9ba0d
xor eax, esi
not ecx
or ecx, eax
mov eax, ecx
and ecx, 0xafeb2b5c
not eax
and eax, 0x5014d4a3
or ecx, eax
mov eax, edi
xor ecx, 0xafeb2b5c
and eax, ecx
xor ecx, edi
mov edi, edx
or ecx, eax
not edi
mov eax, ecx
not ecx
and edi, 0x5310d42b
mov esi, ecx
or eax, 0xe821080
and ecx, 0x40006252
and eax, 0x1eca18a9
or esi, 0x50486a7b
or ecx, eax
mov eax, esi
and esi, 0x1eca18a9
not eax
and eax, 0xa1358504
or eax, esi
xor eax, ecx
mov ecx, eax
and eax, 0x42005de1
not ecx
and ecx, 0xbdffa21e
or eax, ecx
mov ecx, edx
mov esi, eax
xor eax, 0xedb7c865
xor ecx, eax
xor esi, 0x482390
and eax, 0x5310d42b
and esi, 0xacef2bd4
and ecx, edx
and edx, 0xacef2bd4
or esi, eax
or edx, edi
mov eax, ecx
xor esi, edx
and eax, esi
xor esi, ecx
mov ecx, dword [esp + 0x14]
or esi, eax
push 0
push esi
call fcn.0040b8a0
call fcn.00420fc8
mov ecx, eax
mov esi, 0x451c594c
xor cl, 1
or cl, al
mov edx, ecx
mov ah, cl
xor dl, 1
and dl, cl
and ah, dl
xor dl, cl
or dl, ah
mov ah, al
and ah, cl
xor cl, al
xor dl, al
or cl, ah
mov eax, edx
xor cl, 1
and al, cl
xor cl, dl
or cl, al
mov eax, 0xa66b0c4b
and cl, 1
mov byte [esp + 0x8f], cl
nop word cs:[eax + eax]
nop
cmp eax, 0x69bd5942
je 0x40384b
cmp eax, 0x451c594c
je 0x403836
cmp eax, 0xa66b0c4b
jne 0x403800
movzx eax, byte [esp + 0x8f]
cmp byte [esp + 0x8f], 0
mov eax, 0x69bd5942
cmovne eax, esi
cmp eax, 0x69bd5942
jne 0x403807
jmp 0x40384b
mov ecx, dword [esp + 0x38]
call fcn.0040f090
mov eax, 0x69bd5942
cmp eax, 0x69bd5942
jne 0x403807
mov eax, dword [esp + 0x38]
mov esi, 0xade8a66
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx + 0x38]
mov dword [esp + 0x90], eax
mov eax, 0x37bf94ad
nop dword [eax]
cmp eax, 0xd32c5c7f
je 0x40389c
cmp eax, 0xade8a66
je 0x4038bd
cmp eax, 0x37bf94ad
jne 0x403870
cmp dword [esp + 0x90], 0
mov eax, 0xd32c5c7f
cmove eax, esi
cmp eax, 0xd32c5c7f
jne 0x403877
mov eax, dword [esp + 0x90]
mov eax, dword [eax]
mov ecx, dword [esp + 0x90]
call dword [eax + 8]
mov eax, 0xade8a66
cmp eax, 0xd32c5c7f
jne 0x403877
jmp 0x40389c
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x98]
xor ecx, ebp
call fcn.0041ede8
mov eax, dword [esp + 0x2c]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret